POV-Ray : Newsgroups : povray.binaries.images : Learner IK problems... (dull illustrations, 9+1kbu) : Learner IK problems... (dull illustrations, 9+1kbu) Server Time
16 Aug 2024 10:26:51 EDT (-0400)
  Learner IK problems... (dull illustrations, 9+1kbu)  
From: Mark Hanford
Date: 14 Feb 2002 17:14:06
Message: <3c6c36ae@news.povray.org>
Dear gathered pro's...

I have been trying to create an IK system for positioning the fingers of my
robot hand, preferably without too much help, however the "Joy Of Discovery"
is rapidly loosing out to the "Frustration Of GetNowhere"

This is supposed to be a relatively simple case, but I am getting totally
stuffed somewhere:
I am trying to move the tip of Joint2 (blue) to the target.  The circle is
an exagerated tollerance boudary, anywhere within this circle will be
alright (bailout).

I am using a process described by
http://freespace.virgin.net/hugo.elias/models/m_ik.htm which uses the dot
product of the vector from the tip of the joint to the target and the
tangent to the "bone" of the joint to calculate how much to move the arm...

What I have is a situation where the last joint seems to move okay, so it
always "yearns" towards the target, wherever the target is, and if I
manually set the rotation angle for Joint1 (green), the tip still follows
the target - and a little anim seems to show this nicely.

Where I'm getting totally lost is when I'm trying to move two joints at
once, and I can't work out if I'm assuming something incorrectly about the
tangent vector R or
what.    AAAaaaarrrgghhh....

This should be simple, as the joint are only articulated in with one degree
of freedom, but I'm stumped.  I don't know a huge amount about vector maths,
and I think this may be holding me up :(

thanks,

Mark

(Source is in p.t.s-f)

Tip[] stores the tip coords for each joint
Length[] is the length of the joint
Rotate[] is the angle by which to move the joint
Right[] is supposed to be the bone-tangent (R in instructions)
Force[] is supposed to be the force-vector (F in instructions)

#macro ReorientTip2()
  #while (Torque[2]>TorqueBailout)
      CalcTipsFK()
      #declare Right[2]=vrotate(<0,1,0>, (Rotate[0]+Rotate[1]+Rotate[2])*z);
      #declare Force[2]=TargetLocation-Tip[1];
      #declare Torque[2]=vdot(Right[2], Force[2])*Delta;
      #declare Rotate[2]=Rotate[2]+Torque[2];
#end



Mark Hanford
http://www.mrhanford.com/povray


Post a reply to this message


Attachments:
Download 'ik-frame9.jpg' (10 KB) Download 'websample1.gif' (2 KB)

Preview of image 'ik-frame9.jpg'
ik-frame9.jpg

Preview of image 'websample1.gif'
websample1.gif


 

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.